/*
 * 数组循环右移
 *
 * 题目链接：https://programming.pku.edu.cn/probset/94fe0bee6d4c4e68b4b19c3db5d14a33/3fc5ecdad3e14920823505e99fe229b2/
 * 作者：lyazj <seeson@pku.edu.cn>
 *
 * 本题所需主要知识点：
 *   - 数组
 *   - 循环
 */

#include <stdio.h>
#include <stdbool.h>  // for bool, true, false

static void output(int a)
{
  static bool first = true;  // 首次调用时初始化为 true
  if(first) {
    first = false;  // 首次不输出空格
  } else {
    putchar(' ');  // 非首次则输出空格
  }
  printf("%d", a);
}

int main(void)
{
  // 输入元素个数 n
  int n;
  scanf("%d", &n);

  // 输入长度为 n 的整数数组
  int a[n];  // 当 n 不是很大的时候，用变长数组（VLA）很方便
  for(int i = 0; i < n; ++i) scanf(" %d", &a[i]);

  // 输入移位数 s
  int s;
  scanf(" %d", &s);

  // 计算数组首元素移到的位置
  s %= n;

  // 循环移位后原数组尾部的 s 个元素移到了最前面，先输出
  for(int i = n - s; i < n; ++i) output(a[i]);

  // 随后输出原数组首部的剩余元素
  for(int i = 0; i < n - s; ++i) output(a[i]);

  // 最后换行
  printf("\n");

  return 0;
}
